home *** CD-ROM | disk | FTP | other *** search
- program console;
- (*
- コンソールの速度を測るツール Programed by T.Suzuki 1993.6.21
- *)
- uses Dos;
- var
- h, m, s, hund ,time_1,time_2,time_3,time_4: Word;
- d,seg_29,ofs_29:word;
- start_time,end_time:longint;
- i:integer;
- n:byte;
- fp:text;
- p,pp:pointer;
-
- procedure usage;
- begin
- writeln('usage : console [-f]');
- writeln;
- writeln(' コンソールの速さを計測します。');
- writeln;
- writeln(' -f : Int29hをフックして画面表示を止めて計測する');
- end;
-
- begin
- if paramcount > 0 then if (pos('?',paramstr(1))>0) or
- (pos('h',paramstr(1))>0) or (pos('H',paramstr(1))>0)
- then begin usage;halt(0) end;
-
- getintvec($29,p);
- pp:=@p;
- ofs_29:=memw[dseg:ofs(pp)-4]; {Int29hのベクタを保存}
- seg_29:=memw[dseg:ofs(pp)-2];
- d:=mem[seg_29:ofs_29];
- if (pos('f',paramstr(1))>0) or (pos('F',paramstr(1))>0)
- then mem[seg_29:ofs_29]:=$cf; {Int29hのコードの先頭にIRET}
- GetTime(h,m,s,hund);
- start_time:=h*3600 + m*60 + s;
- for i:=1 to 2000 do writeln;
- GetTime(h,m,s,hund);
- end_time:=h*3600 + m*60 + s;
- if start_time>end_time
- then time_1:=24*3600-start_time+end_time
- else time_1:= -start_time+end_time;
-
- n:=1;
- GetTime(h,m,s,hund);
- start_time:=h*3600 + m*60 + s;
- for i:=1 to 2000 do begin
- writeln(copy('■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■'
- ,1,n shl 1));
- inc(n);if n=40 then n:=1;
- end;
- GetTime(h,m,s,hund);
- end_time:=h*3600 + m*60 + s;
- if start_time>end_time
- then time_2:=24*3600-start_time+end_time
- else time_2:= -start_time+end_time;
-
- GetTime(h,m,s,hund);
- start_time:=h*3600 + m*60 + s;
- for i:=1 to 2000 do writeln('■■■■■■■■■■■■■■■■■■■■');
- GetTime(h,m,s,hund);
- end_time:=h*3600 + m*60 + s;
- if start_time>end_time
- then time_3:=24*3600-start_time+end_time
- else time_3:= -start_time+end_time;
-
- GetTime(h,m,s,hund);
- start_time:=h*3600 + m*60 + s;
- for i:=1 to 2000 do writeln('■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■');
- GetTime(h,m,s,hund);
- end_time:=h*3600 + m*60 + s;
- if start_time>end_time
- then time_4:=24*3600-start_time+end_time
- else time_4:= -start_time+end_time;
- if (pos('f',paramstr(1))>0) or (pos('F',paramstr(1))>0)
- then mem[seg_29:ofs_29]:=d; {Int29hを元に戻す}
-
- writeln('2000行改行テスト : かかった時間・・・・',
- time_1:7,'秒');
- writeln('全角(1-39文字)×2000行改行テスト : かかった時間・・・・',
- time_2:7,'秒');
- writeln(' : スピード ・・・・',
- 8000/time_2*80:7:0,'bps');
- writeln('全角20文字×2000行表示テスト : かかった時間・・・・',
- time_3:7,'秒');
- writeln(' : スピード ・・・・',
- 8000/time_3*80:7:0,'bps');
- writeln('全角39文字×2000行表示テスト : かかった時間・・・・',
- time_4:7,'秒');
- writeln(' : スピード ・・・・',
- 8000/time_4*80:7:0,'bps');
- assign(fp,'console.res');
- rewrite(fp);
- writeln(fp,'2000行改行テスト : かかった時間・・・・',
- time_1:7,'秒');
- writeln(fp,'全角(1-39文字)×2000行改行テスト : かかった時間・・・・',
- time_2:7,'秒');
- writeln(fp,' : スピード ・・・・',
- 8000/time_2*80:7:0,'bps');
- writeln(fp,'全角20文字×2000行表示テスト : かかった時間・・・・',
- time_3:7,'秒');
- writeln(fp,' : スピード ・・・・',
- 8000/time_3*80:7:0,'bps');
- writeln(fp,'全角39文字×2000行表示テスト : かかった時間・・・・',
- time_4:7,'秒');
- writeln(fp,' : スピード ・・・・',
- 8000/time_4*80:7:0,'bps');
- close(fp);
- end.